
package com.nn.smart.bus.dto;

import java.io.Serializable;
import java.util.Date;

import com.nn.smart.bus.commons.tools.validator.group.DefaultGroup;
import com.nn.smart.bus.commons.tools.validator.group.UpdateGroup;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;


/**
 * 菜单管理
 *
 * @author elink elink@elink-cn.com
 * @since v1.0.0 2020-03-25
 */
@Data
public class SysAnalysisMenuDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @NotNull(message = "{id.require}", groups = UpdateGroup.class)
    private Long id;

    /**
     * 上级ID，一级菜单为0
     */
    @NotNull(message = "{sysmenu.pid.require}", groups = DefaultGroup.class)
    private Long pid;

    /**
     * 类型   0：菜单   1：按钮
     */
    @Range(min = 0, max = 1, message = "{sysmenu.type.range}", groups = DefaultGroup.class)
    private Integer type;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 样式名称
     */
    private String className;

    /**
     * 排序
     */
    @Min(value = 0, message = "{sort.number}", groups = DefaultGroup.class)
    private Integer sort;

    /**
     * 删除标识  0：未删除    1：删除
     */
    private Integer delFlag;

    /**
     * 创建者
     */
    private Long creator;

    /**
     * 创建时间
     */
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    private Date createDate;

    /**
     * 更新者
     */
    private Long updater;

    /**
     * 更新时间
     */
    private Date updateDate;

    /**
     * 菜单编码
     */
    private String menuCode;

    /**
     * 备注
     */
    private String remark;

    /**
     * 子模板ID
     */
    private String templateId;

    @NotBlank(message = "{sysmenu.name.require}", groups = DefaultGroup.class)
    private String name;

    /**
     * 是否显示数字 0否 1是
     */
    private String numFlag;

    //虚字段

    /**
     * 上级菜单名称
     */
    private String parentName;

    /**
     * 模块名称
     */
	private String modelname;


}
